package com.doitedu.mr.day04.itera;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;

/**
 * @Date 2021/12/3
 * @Created by HANGGE
 * @Description
 * 迭代器不仅可以迭代集合中的元素
 *     大部分情况下是用来迭代其他数据源的数据  文件内容  mysql数据结果
 * 1 迭代无数的数据 不需要大量的内存  一个对象接收所有的数据
 * 2 hashNext  next 方法获取数据 , 用户根本不关注数据底层的存储 , 保护数据结构
 */
public class MyIterator implements Iterator<MyUser> {
    BufferedReader br = null ;
    // 构造代码块
    {
        try {
             br =   new BufferedReader(new FileReader("d://user.txt"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    String line = null ;
    // 判断是否还有下一条数据
    public boolean hasNext() {
        boolean flag = false ;
        try {
             line = br.readLine();
            if(line!=null){
                flag = true ;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return flag;
    }
 // 一个   一个对象就可以迭代无数条数据
    MyUser myUser = new MyUser();
    // 如果有下一条数据   执行  获取数据
    public MyUser next() {
        // 解析行数据
        String[] split = line.split(",");
        //1,张飞,21,北京,80.0
       String uid =  split[0];
       String name =  split[1];
       int age =  Integer.parseInt(split[2]);
       String city =  split[3];
       double score = Double.parseDouble(split[4]);
       // MyUser myUser = new MyUser();
        myUser.setUid(uid);
        myUser.setName(name);
        myUser.setAge(age);
        myUser.setCity(city);
        myUser.setScore(score);
        return myUser;
    }
}
